首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏韩曙亮的移动开发专栏

    数据结构数据结构概念 ( 数据结构常见的存储结构 | 数据结构常见逻辑结构 )

    一、数据结构概念 数据结构 是 计算机内存 中 组织 和 存储 数据 的方式 , 有以下两部分组成 : 逻辑结构 : 数据的存放形式 ; 操作 : 数据如何操作 , 如 : 排序 , 查询 , 删除 , 增加 , 修改 ; 数据结构 是为了 高效访问 内存中的数据 ; 数据结构 定义了 内存中的 数据元素 之间的关系 以及 对这些数据元素的操作 ; 二、数据结构常见的存储结构 常见数据结构包括 : 图(Graph): 非线性数据结构,由节点和边组成,节点之间的关系可以是任意的。 堆(Heap): 特殊的树形数据结构,具有特定的堆属性,常用于实现优先队列等应用。 二、数据结构常见逻辑结构 数据结构逻辑结构 类型 : 集合结构 : Set Structure , 集合结构中的 数据元素之间没有任何特定的关系, 每个元素都是独立的,没有顺序和层次关系 常见的非线性结构有树和图 : 树形结构 : 树结构中的数据元素按照层次关系组织,每个元素可以有多个子节点; 图形结构 : 图结构中的数据元素之间的关系可以是任意的,包括多对多的连接关系。

    94420编辑于 2023-10-11
  • 初阶数据结构】深入解析栈:探索底层逻辑

    初阶数据结构相关知识点可以通过点击以下链接进行学习一起加油! 时间与空间复杂度顺序表单链表 带头双向循环链表引言本篇将深入解析栈:探索底层逻辑,理解底层是如何实现并了解该接口实现的优缺点,以便于我们在编写程序灵活地使用该数据结构。 图片个人主页: 是店小二呀C语言笔记专栏: C语言笔记C++笔记专栏: C++笔记初阶数据结构笔记专栏: 初阶数据结构笔记喜欢的诗句:无人扶我青云志 我自踏雪至山巅一、栈的概念及结构栈是指一种特殊的线性表 这里主要分享的是跟数据结构相关的栈,而不是指存储内存一块内存区域栈区,栈区是指CPU寄存器里的某个指针所指向的一片内存区域(存放函数的参数值,局部变量的值等)其中有两个核心操作压栈和出栈(出入数据在栈顶实现 这里是店小二初阶数据结构笔记,希望对你在学习初阶数据结构中有所帮助!

    23120编辑于 2024-07-26
  • 初阶数据结构】深入解析队列:探索底层逻辑

    初阶数据结构相关知识点可以通过点击以下链接进行学习一起加油! 时间与空间复杂度顺序表单链表 带头双向循环链表栈 引言本篇将深入解析队列:探索底层逻辑,理解底层是如何实现并了解该接口实现的优缺点,以便于我们在编写程序灵活地使用该数据结构。 图片个人主页: 是店小二呀C语言笔记专栏: C语言笔记C++笔记专栏: C++笔记初阶数据结构笔记专栏: 初阶数据结构笔记喜欢的诗句:无人扶我青云志 我自踏雪至山巅一、队列的概念及结构队列是指只允许在一端进行插入数据操作 如果使用数组实现在出队列时,需要挪移大量数据,效率较低这里采用链表结构实现队列在设计队列结构中,需要设计两个指针去控制队列各节点的情况。 这里是店小二初阶数据结构笔记,希望对你在学习初阶数据结构中有所帮助!

    29010编辑于 2024-07-27
  • 初阶数据结构】深度解析七大常见排序|掌握底层逻辑与原理

    初阶数据结构相关知识点可以通过点击以下链接进行学习一起加油! 时间与空间复杂度顺序表单链表 带头双向循环链表栈 队列循环队列 树与二叉树二叉树遍历 引言本篇将介绍七大常见排序底层逻辑,有助于我们更好地理解不同排序的适用场景和效率上的差别。 图片个人主页: 是店小二呀C语言笔记专栏: C语言笔记C++笔记专栏: C++笔记初阶数据结构笔记专栏: 初阶数据结构笔记喜欢的诗句:无人扶我青云志 我自踏雪至山巅一、排序的概念及其运用1.1 (实际中很少使用)时间复杂度: O(N^2^)空间复杂度: O(1)稳定性:不稳定*** 3.4 堆排序堆排序(Heapsort)是指利用堆积树(堆)这种数据结构所设计的一种排序算法,它是选择排序的一种 这里是店小二初阶数据结构笔记,希望对你在学习初阶数据结构中有所帮助!

    32410编辑于 2024-08-01
  • 来自专栏技术教程

    数据结构初阶

    "数据结构初阶" 是学习计算机科学的核心基础,它研究的是数据在计算机中如何组织、存储和管理,以便高效地进行访问和修改。掌握数据结构是写出优秀、高效程序的关键。 数据结构 (Data Structure): 相互之间存在一种或多种特定关系的数据元素的集合。它包含:数据的逻辑结构: 数据元素之间的逻辑关系(独立于计算机)。 理解算法基础: 算法和数据结构密不可分,算法作用于数据结构之上。编程必备技能: 是面试和实际开发中的核心考察点。三、常见初阶数据结构分类 (逻辑结构)1. 线性结构数据元素之间存在一对一的线性关系。 元素顺序排列。数组 (Array):逻辑结构: 线性序列。存储结构: 连续的内存空间。特点: 通过下标 (索引) 随机访问元素,速度极快 (O(1))。 理解实现: 学习每种数据结构常见的存储结构(如数组、链表)是如何实现其逻辑结构的。对比分析: 学会对比不同数据结构的优缺点和适用场景。

    39110编辑于 2025-07-04
  • 来自专栏C语言

    初阶数据结构数据结构前言

    1.什么是数据结构数据结构(Data Structure)是计算机存储、组织数据的方式,指相互之间存在一种或多种特定关系的 数据元素的集合。 2.什么是算法? 3.数据结构和算法的重要性 在校园招聘的笔试中: 目前校园招聘笔试一般采用Online Judge形式, 一般都是20-30道选择题+2道编程题,或者3-4道 编程题。 3.你了解联合体和结构体吗? 4.如何测试一个机器是大端还是小端? 5.你了解队列和栈吗? 6.怎么用两个栈实现一个队列。 7.你使用过模版吗? 8.写一个比较两个数大小的模板函数。 .快速排序思想 14.递归是什么 15.分治是什么,与递归区别是什么 16.web平台是怎么做的 17.linux命令 18.了解些什么前沿的技术,英语怎么样,了解过什么英语的文献 在未来的工作中: 数据结构与算法对一个程序员来说的重要性 4.如何学好数据结构和算法 4.1 死磕代码 4.2 注意画图和思考 5.数据结构和算法书籍及资料推荐 5.1数据结构学习得差不多了,推荐大家都去把《剑指offer》和《程序员代码面试指南》上的题 做一遍

    20100编辑于 2024-12-13
  • 初阶数据结构】深入解析顺序表:探索底层逻辑

    初阶数据结构 相关知识点 可以通过点击 以下链接进行学习 一起加油! 时间与空间复杂度 引言 本篇将深入解析顺序表:探索底层逻辑,理解底层是如何实现并了解该接口实现的优缺点,以便于我们在编写程序灵活地使用该数据结构。 个人主页: 是店小二呀 C语言笔记专栏: C语言笔记 C++笔记专栏: C++笔记 初阶数据结构笔记专栏: 初阶数据结构笔记 喜欢的诗句:无人扶我青云志 我自踏雪至山巅 一、线性表的概念 线性表 线性表是一种在实际中广泛使 用的数据结构常见的线性表:顺序表、链表、栈、队列、字符串等。线性表在逻辑上是线性结构,也就说是连续的一条直线。 这里是店小二初阶数据结构笔记,希望对你在学习初阶数据结构中有所帮助!

    29920编辑于 2024-07-25
  • 初阶数据结构】深入解析循环队列:探索底层逻辑

    初阶数据结构相关知识点可以通过点击以下链接进行学习一起加油! : 是店小二呀C语言笔记专栏: C语言笔记C++笔记专栏: C++笔记初阶数据结构笔记专栏: 初阶数据结构笔记喜欢的诗句:无人扶我青云志 我自踏雪至山巅一、循环队列的概念循环队列是一种用数组实现的队列数据结构 二、实现循环队列的知识铺垫(核心实现逻辑)2.1 队列满足什么条件为空当front==back时不一定为空。 obj) { assert(obj); return obj->head==obj->back;}这里需要注意的是:对于判断是否为空,不是重点,对于判断是否为满,根据取模的特点进行处理,对于数据结构处理建议画图分析 这里是店小二初阶数据结构笔记,希望对你在学习初阶数据结构中有所帮助!

    46910编辑于 2024-07-28
  • 来自专栏YIN_尹的博客

    初阶数据结构】——链表常见面试题剖析

    老规矩,接下来我们画图来带大家再梳理一遍思路: 大家要注意,数据结构的学习,画图是很重要的,图画清楚了,看着图去写代码就很简单了。 另外,还有一个问题: 我们选择把要保留的结点尾插到一个新的链表,那这个新的链表,通过前面的学习,我们知道,有两种结构可以选择: 带哨兵位的和不带哨兵位的。 其实这道题你选择这两种结构哪一个都可以,带哨兵位的好处就是插入第一个元素,即头插的时候,可以方便一点,如果不带哨兵,头插需要单独处理。 代码实现 至于代码的实现,这里两种结构,我都给大家写了: 不带哨兵位 struct ListNode* removeElements(struct ListNode* head, int val){ list2; struct ListNode* newhead=guardnode->next; free(guardnode); return newhead; } 采用带哨兵位的结构

    37110编辑于 2024-01-23
  • 初阶数据结构】深入解析带头双向循环链表:探索底层逻辑

    初阶数据结构相关知识点可以通过点击以下链接进行学习一起加油! 引言本篇将介绍带头双向循环链表底层实现以及在实现中需要注意的事项,帮助各位在使用过程中根据底层实现考虑到效率上问题和使用时可能会导致的错误使用个人主页: 是店小二呀C语言笔记专栏: C语言笔记C++笔记专栏: C++笔记初阶数据结构笔记专栏 : 初阶数据结构笔记喜欢的诗句:无人扶我青云志 我自踏雪至山巅一、前文链表的分类有很多种,只需要将无头单向非循环链表和带头双向循环链表掌握,也就理解了剩下链表构成和实现。 具体实现逻辑,知道pos和posprev的地址,再通过改变指针完成链接2.7.2 任意位置删除void SLEmpty(SLNode* head, SLNode* pos, LTDataType x){ 这里是店小二初阶数据结构笔记,希望对你在学习初阶数据结构中有所帮助!

    25620编辑于 2024-07-25
  • 来自专栏代码飞升

    数据结构初阶】单链表

    链表的概念及结构 概念:链表是⼀种物理存储结构上⾮连续、⾮顺序的存储结构,数据元素的逻辑顺序是通过链表 中的指针链接次序实现的。 链表的结构跟火车厢相似,淡季时⻋次的⻋厢会相应减少,旺季时⻋次的⻋厢会额外增加⼏节。只需要将⽕⻋⾥的某节⻋厢去掉/加上,不会影响其他⻋厢,每节⻋厢都是独⽴存在的。⻋厢是独⽴存在的,且每节⻋厢都有⻋⻔。 结合前⾯学到的结构体知识,我们可以给出每个节点对应的结构体代码: 假设当前保存的节点为整型: struct SListNode { int data; //节点数据 struct SListNode 给定的链表结构中,如何实现节点从头到尾的打印? 2. 程序源码 共分三个文件 SLTist.h 函数的声明 #pragma once #include<stdio.h> #include<stdlib.h> #include<assert.h> //定义节点结构

    17510编辑于 2025-08-28
  • 数据结构初阶——顺序表①

    前言 由于这是一篇面向初阶数据结构的文章,所以在这里笔者大致描述数据结构和算法的定义。 什么是数据结构数据结构是计算机存储、组织数据的方式,指相互间存在一种或多种特殊关系的元素的集合。 顺序表的定义:用一段连续的物理地址以存储数据元素的线性结构。 顺序表特点:逻辑上相邻的数据元素在物理存储结构上也是连续的。 三、顺序表的增删查改 数据结构不仅仅是数据的集合,还包含了数据之间的关系和操作这些数据的方法。 现在我们来讨论操作这些数据的方法。 顺序表的操作大可分为四个方向:增 删 查 改 首先任何数据结构都离不开初始化和销毁两个步骤!!! ,同时也是各大教材共同选择的新人入门数据结构的第一课时。

    15100编辑于 2025-06-10
  • 数据结构初阶——单链表②

    链表是一种在物理存储结构上非连续,但在逻辑结构上连续的一种存储结构,这种逻辑上的联系通过链表中的指针实现。 何为逻辑上的连续呢?我们可以将链表想象成一辆火车,车头连着车厢,车厢与车箱间连着。 注意: 1.链表是逻辑上相连,物理结构上不一定相连; 2.链表的节点一般都是在堆上申请出来的(即malloc或者new出来的); 一、单链表 实际上链表有很多分类,主要包: ①括带头、不带头; 即链表前是否有 本文主要讨论第一种即单链表,若读者对第二种链表感兴趣,可以到笔者数据结构分组中查看:【数据结构】带头双向循环链表 那么单链表的结构体代码如下: typedef int DateType; typedef 二、增删查改 数据结构无外乎增、删、查、改四个主要功能,以下给出他们对应的函数。

    16700编辑于 2025-06-10
  • 来自专栏代码飞升

    初阶数据结构】双向链表

    双向链表 链表分类 8种 (带头/不带头 单向/双向 循环/循环) 最常用两种 单链表(不带头单向不循环链表) 双向链表(带头双向循环链表) 双链表有 头节点(哨兵位) 后继指针(next) 前驱指针 pragma once #include<stdio.h> #include<stdlib.h> #include<assert.h> typedef int LTDataType; //定义双向链表节点的结构

    15910编辑于 2025-08-28
  • 来自专栏YIN_尹的博客

    初阶数据结构】——循环队列

    循环队列是一种线性数据结构,其操作表现基于 FIFO(先进先出)原则并且队尾被连接在队首之后以形成一个循环。它也被称为“环形缓冲器”。 循环队列的一个好处是我们可以利用这个队列之前用过的空间。 结构的选择:数组 or 链表? 那下面要实现循环队列的话,我们采用哪种结构呢,数组还是链表呢? 我们假设循环队列的长度k(当然实现好之后k传几构造出来长度就是几)为4,我们来分析一下。 首先我们来分析一下用链表行不行 链表结构分析 那链表的话我们是不是正好可以用一个循环链表啊,因为我们现在要实现循环队列嘛: 搞一个循环单链表,循环队列长度为4,所以开4个结点。 那走到这里我们发现这个结构好像就跑通了,用循环单链表实现好像挺棒的。 但是此时我们再来看要实现的几个接口: 我们发现构造,获取队头元素,插入,删除,判空判满这些都不难搞。 那此时呢,我们不妨来考虑一下另外一种结构——用数组实现怎么样呢?

    65210编辑于 2024-04-20
  • 来自专栏C++领域相关博客

    数据结构初阶】顺序表

    一、线性表 线性表,是一类具有相同特性的数据结构的集合。常见的线性表:顺序表、链表、栈、队列、字符串... 相同特性又表现在逻辑结构和物理结构上;逻辑结构:人为想象出来的数据的组织形式,一定是线性的。物理结构:数据在内存上的存储形式,不一定是线性的。 线性表在逻辑上是线性结构,也就说是连续的一条直线。 但是在物理结构上不一定是连续的,线性表在物理上存储时,通常以数组和链式结构的形式存储。 二、顺序表 1、概念 顺序表 是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。 2、与数组的区别 顺序表的底层逻辑是数组,对数组的封装,实现了常用的增删查改等接口。 3、分类 分为 静态顺序表和 动态顺序表。 静态顺序表:使用定长数组存储元素。

    22310编辑于 2024-10-21
  • 来自专栏技术分享

    初阶数据结构】- 顺序表

    顺序表的概念及结构 1.1 线性表 顺序表是一种线性表,线性表是n个具有相同特性的数据元素的有限序列,常见的线性表有:顺序表,链表,栈,队列 线性表的逻辑结构:在逻辑上是一条连续的直线。 线性表的物理结构:线性表在物理结构上并不是连续的,线性表在物理上存储时通常以数组或链式的结构存储的。 2. 顺序表的分类 • 顺序表与数组的关系 ◦ 顺序表的底层结构就是数组,通过对数组的封装,实现增删查改等功能。 • 顺序表的分类: ◦静态顺序表 //使用定长数组存储数据 typedef int SLDataType; #define N 10 typedef struct SeqList { SLDataType 动态顺序表的实现 3.1 头文件.h 顺序表结构的声明 #include<stdio.h> #include<stdlib.h>//需要动态申请内存的头文件 #include<assert.h> typedef

    18810编辑于 2024-10-21
  • 来自专栏学习

    初阶数据结构】节点层级的逻辑乐章:二叉树

    本章节是树结构的最后一篇——二叉树,这里我们只实现最简单的二叉树结构,在C++语法部分将学习更高阶的AVL树、红黑树巩固 1.二叉树的结构 typedef int BTDataType; typedef data = x; node->left = NULL; node->right = NULL; return node; } 使用 malloc 函数为新节点分配内存,其大小为 BTNode 结构体的大小 node4; node2->left = node3; node4->left = node5; node4->right = node6; return node1; } 由于现在对二叉树结构掌握还不够深入 ,为了降低学习成本,此处手动快速创建一棵简单的二叉树,快速进入二叉树操作学习,等二叉树结构了解的差不多时,我们反过头再来研究二叉树真正的创建方式 2.3 二叉树的前序遍历 void PreOrder(BTNode 层序遍历就是从上到下,从左到右进行遍历,层序遍历也叫作广度优先遍历(BFS) 这里需要利用队列的特性来进行,出上一层,带入下一层(每出一个节点,就插入该节点的子节点)引入队列的头文件和源文件 传送门:【初阶数据结构

    22600编辑于 2025-02-25
  • 来自专栏YIN_尹的博客

    初阶数据结构】——双“指针”求解顺序表(数组)常见问题

    我们来看这道题: 它给我们两个 非递减顺序 排列的整数数组 nums1 和 nums2,确定是要求我们,但是要求我们把合并后的数组放到nums1 中。 我们来分析一下: 看这种情况: 还是上面的方法依次进行比较。 但是这次我们会发现: 这次是i1先走完,但是这样结束了吗。

    25610编辑于 2024-01-23
  • 数据结构初阶】--单链表(二)

    SLTPrint(plist); //销毁 SListDestroy(&plist); } int main() { //test1(); test2(); return 0; } 往期回顾: 【数据结构初阶 】--单链表(一) 总结:到此为止单链表我们就已经全部实现完成了,大家还是要养成画图的习惯,并且下去要自己实现一遍,接下来我还会更新双向链表、栈和队列、二叉树等数据结构、希望大家坚持下去,如果文章对你有帮助的话

    21610编辑于 2025-11-19
领券